package com.karson.common.enums;

/**
 * 统计类型枚举，用于标识不同的计数策略。
 * 包含专辑播放、完全观看、点赞、点踩、收藏等统计类型。
 */
public enum StatisticType {
    /** 点击量 */
    PV("pv"),

    /** 专辑播放数 */
    PLAY("play"),

    /** 专辑完全观看数（观看完成） */
    COMPLETELY_VIEW("completelyView"),

    /** 点赞数 */
    LIKE("like"),

    /** 点踩数 */
    DISLIKE("dislike"),

    /** 收藏数 */
    FAVORITE("fav");

    /** 对应策略或 Bean 的唯一标识 */
    private final String type;

    /**
     * 构造函数
     *
     * @param type 统计类型字符串
     */
    StatisticType(String type) {
        this.type = type;
    }

    /**
     * 获取统计类型对应的字符串
     *
     * @return 统计类型字符串
     */
    public String getType() {
        return type;
    }

    /**
     * 自定义解析方法
     * @param code
     * @return
     */
    public static StatisticType fromCode(String code) {
        for (StatisticType type : values()) {
            if (type.name().equalsIgnoreCase(code) || type.type.equalsIgnoreCase(code)) {
                return type;
            }
        }
        throw new IllegalArgumentException("Invalid StatisticType: " + code);
    }
}